#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "gestion_personnel.h"





//void gestion_personnel ()
/*int main()

{ int r,iden;
  personnel p;
  int id;
  char pass[10];

	printf("\n\n\nMenu de gestion de personnel\n!!! Accés exclusif à l'administration de la clinique\n\nDonner votre identifiant et votre mot de passe :\n");
	

	
	


  do{
printf("*******************************************************************************************************************************************************");
	printf("\n\nTapez :\n\t1 pour ajouter un personnel\n\t2 pour modifier un personnel\n\t3 pour Verifier un personnel\n\t4 pour afficher un personnel\n\t5 pour afficher tous les personnels\n\t6 pour supprimer un personnel\n\t0 pour quitter le gestion du personnel\n");
	printf("\nchoix:\t");
  	scanf("%d",&r);
printf("*******************************************************************************************************************************************************");

	if(r==1) {saisir_personnel( &p);ajouter_personnel(&p);}
	else if(r==2) {printf("\nDonner l'identifiant du personnel à modifier :\t"); fflush(stdin); scanf("%d",&iden); modifier_personnel(iden);}
	else if(r==3) {printf("\nDonner l'identifiant du personnel à verifier :\t"); fflush(stdin); scanf("%d",&iden);verifier_personnel(iden);}
	else if(r==4) {printf("\nDonner l'identifiant du personnel à afficher :\t"); fflush(stdin); scanf("%d",&iden);afficher_personnel(iden);}
	else if(r==5) afficher_tout_personnel();
	else if(r==6) {printf("\nDonner l'identifiant du personnel à supprimer :\t"); fflush(stdin); scanf("%d",&iden);supprimer_personnel(iden);}
	else if(r!=0) printf("\tChoix non valide\n");
	
    }while(r!=0);
return 0;


}
  


*/


/**************************************************************************/
int nombre_personnel(char chemin[])
{
FILE *f ;
int c;
int nLignes = 0;

f=fopen(chemin,"r");

while((c=fgetc(f)) != EOF)
{
	if(c=='\n')
		nLignes++;
}
return(nLignes);
fclose(f);
}


/**************************************************************************/


void saisir_personnel(personnel *p)
{
    printf("\nDonner les informations concernant le personnel à ajouter :\n");
	printf("\nIdentifiant:\t"); fflush(stdin);  scanf("%d",&(*p).id);
        printf("\nNom:\t"); fflush(stdin); scanf("%s",(*p).nom);
        printf("\nPrenom:\t"); fflush(stdin);  scanf("%s",(*p).prenom);
	printf("\nNationalité:\t"); fflush(stdin); scanf("%s",(*p).nat);
	printf("\nCIN:\t"); fflush(stdin); scanf("%ld",&(*p).cin);
	do{printf("\nAge:\t"); fflush(stdin); scanf("%d",&(*p).age);}while((*p).age<18 || (*p).age>100);
	do{printf("\nFonction (infirmier/medecin/administrateur):\t"); fflush(stdin); scanf("%s",(*p).fonction);}while(strcmp((*p).fonction,"infirmier")!=0 && strcmp((*p).fonction,"medecin")!=0 && strcmp((*p).fonction,"administrateur")!=0);
	printf("\nMot de passe:\t"); fflush(stdin); scanf("%s",(*p).mp);


}



/**************************************************************************/

int existe(int iden,char chemin[])
{int v=0;
int i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;
FILE *f;


f=fopen("personnel.txt","r");

while(i<nombre_personnel("personnel.txt") && v==0)
	{
  		fscanf(f,"%d %s %s %s %ld %d %s %s",&id,nom,prenom,nat,&cin,&age,fonction,mp);
  		if (iden==id) v=1;
		i++;
	}
return(v);


}


/**************************************************************************/


void ajouter_personnel(personnel *p)
{ FILE *f;
   
	f=fopen("personnel.txt","a");

	//saisir_personnel(p);
	

	if (existe((*p).id,"personnel.txt")) printf("\n\t!! Un personnel ayand l'identifiant %d est déja existant\n",(*p).id);

	else fprintf(f,"%d \t %s \t %s \t %s \t %ld \t %d \t %s \t %s \n",(*p).id,(*p).nom,(*p).prenom,(*p).nat,(*p).cin,(*p).age,(*p).fonction,(*p).mp);
	
	
	fclose(f);
}

/**************************************************************************/

void verifier_personnel(int iden)

{
FILE *f;
f=fopen("personnel.txt","r");
int v=0,i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;



	//printf("\nDonner l'identifiant du personnel à verifier :\t");   fflush(stdin);		scanf("%d",&iden);
	

	
	

if(existe(iden,"personnel.txt")==1) printf("\nLe personnel ayant l'identifiant '%d' est enregistré dans la base de données de la clinique\n",iden);
else printf("\nLe Personnel ayant l'identifiant '%d'  n'est pas enregistré dans la base de données de la clinique\n ",iden);

}

/**************************************************************************/


void modifier_personnel(int iden)
{ 
  FILE *f;
  FILE *g;
  personnel *p;
  char nom[20],pren[20],nat[20],fonction[20],mp[20];
  char nnom[20],npren[20],nnat[20],nfonction[20],nmp[20];
  long int cin,ncin;
  int age,id,nage,nid;
  int i=0;
  int c;
  p=malloc(sizeof(personnel));
 
 //printf("\nDonnez l'identifiant du personnel à modifier :\t "); scanf("%d",&iden);

if(existe(iden,"personnel.txt")==0) printf("\nCet identifiant n'appartient à aucun personnel\n ");
else 
{
 
 f=fopen("personnel.txt","r");
 g=fopen("new.txt","w");
 

 
 
while (i<nombre_personnel("personnel.txt") )
    {
     fscanf(f, "%d %s %s %s %ld %d %s %s",&id,nom,pren,nat,&cin,&age,fonction,mp);
     if (id==iden)
	  {
	     do	{printf("données à modifier :\n\n1-ID\n2-Nom\n3-Prenom\n4-Nationalité\n5-CIN\n6-Age\n7-Fonction\n8-Mot de passe\n\n");
		scanf("%d",&c);
		}while(c!=1 && c!=2 && c!=3 && c!=4 && c!=5 && c!=6 && c!=7 && c!=8);
           if(c==1) {	printf("\nNouvel ID:\t");scanf("%d",&nid);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",nid,nom,pren,nat,cin,age,fonction,mp);	}
			
	   if(c==2) {	printf("\nNouveau Nom:\t");scanf("%s",nnom);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nnom,pren,nat,cin,age,fonction,mp);	}

	   if(c==3) {	printf("\nNouveau Prenom:\t");scanf("%s",npren);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,npren,nat,cin,age,fonction,mp);	}

	   if(c==4) {	printf("\nNouvelle Nationalité:\t");scanf("%s",nnat);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nnat,cin,age,fonction,mp);	}

    	   if(c==5) {	printf("\nNouveau CIN:\t");scanf("%ld",&ncin);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,ncin,age,fonction,mp);	}

	   if(c==6) {	printf("\nNouvel Age:\t");scanf("%d",&nage);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,cin,nage,fonction,mp);	}

	   if(c==7) {	printf("\nNouvelle Fonction:\t");scanf("%s",nfonction);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,cin,nage,nfonction,mp);	}

	   if(c==8) {	printf("\nNouveau Mot de passe:\t");scanf("%s",nmp);
			fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,cin,age,fonction,nmp);	}
	 } 
     else
          fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,cin,age,fonction,mp);
	i++;
	
    }



  

fclose(f);
fclose(g);  
remove("personnel.txt");
rename("new.txt","personnel.txt");
 }


}

/**************************************************************************/

void supprimer_personnel(int iden)
{ 
  FILE *f;
  FILE *g;
  personnel *p;
  char nom[20],pren[20],nat[20],fonction[20],mp[20];
  long int cin;
  int age,id;
  int i=0;
  p=malloc(sizeof(personnel));
// printf("\nDonnez l'identifiant du personnel à supprimer :\t ");	scanf("%d",&iden);


if(existe(iden,"personnel.txt")==0) printf("\nCet identifiant n'appartient à aucun personnel\n ");
else 
{
 
 f=fopen("personnel.txt","r");
 g=fopen("new.txt","w");
 

 
 
while (i<nombre_personnel("personnel.txt") )
    {
     fscanf(f, "%d %s %s %s %ld %d %s %s",&id,nom,pren,nat,&cin,&age,fonction,mp);
     if (id!=iden)
	  
	  fprintf(g, "%d\t%s\t%s\t%s\t%ld\t%d\t%s\t%s\n",id,nom,pren,nat,cin,age,fonction,mp);
          
     
          
	i++;
	
   }



  

fclose(f);
fclose(g);  
remove("personnel.txt");
rename("new.txt","personnel.txt");
 }


}

/**************************************************************************/

void afficher_personnel(int iden)
{ 
  FILE *f;
  personnel T[1000];
  int v=0,i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;

 //printf("\nDonnez l'identifiant du personnel à afficher :\t ");	scanf("%d",&iden);

if (existe(iden,"personnel.txt")==0) printf("\nCet identifiant n'appartient à aucun personnel\n");
else{

f=fopen("personnel.txt","r");

 

 
 
while(i < nombre_personnel("personnel.txt") && v==0)
  {fscanf(f,"%d %s %s %s %ld %d %s %s",&id,nom,prenom,nat,&cin,&age,fonction,mp); 
if (id!=iden)   
	{printf("\n\nID:%d\t\tNom:%s\t\tPrenom:%s\t\tNationalité:%s\t\tCIN:%ld\t\tAge:%d\t\tFonction:%s\t\tPass:%s\n",id,nom,prenom,nat,cin,age,fonction,mp);
	 v=1;}
    i++;
  }
}


}
/**************************************************************************/

void afficher_tout_personnel()
{ FILE *f;
 int i=0;
char nom[10],prenom[10],mp[20],fonction[20],nat[20];
int age,id;
long int cin;

f=fopen("personnel.txt","r");
while(i < nombre_personnel("personnel.txt") )
  {fscanf(f,"%d %s %s %s %ld %d %s %s",&id,nom,prenom,nat,&cin,&age,fonction,mp);    
   printf("\n\nID:%d\t\tNom:%s\t\tPrenom:%s\t\tNationalité:%s\t\tCIN:%ld\t\tAge:%d\t\tFonction:%s\t\tPass:%s\n",id,nom,prenom,nat,cin,age,fonction,mp);
   i++;
  }
}

